Advance Terminal

OS에서 기본적으로 제공하는 터미널의 문제점은 대량 데이터를 타이핑하여 출력할 때,
대단히 느리다.
MS window의 터미널 윈도(cmd.exe)는 GDI를 이용해 문자를 렌더링하기 때문에 느리다.

거래 터미널은 여러 개의 버퍼와 뷰포트로 이루어지며,
여러가지 거래, 교환 데이터들이 동시에 서로 다른 버퍼에서 업데이트된다.
모든 정보는 하나의 화면에 표현되어야 한다.
struct TableBuffer: IBuffer{
TableBuffer(vector<TableColumnSpec> spec, int totalHeight){
// ...
}
struct TableColumnSpec{
string header;
int width;
enum class TableColumnAlignment{
Left, Center, Right
} alignment;
}
};
뷰포트의 역할
- 보여줄 버퍼로의 참조
- 크기
- 뷰포트가 버퍼보다 작으면, 버퍼의 어느 부분을 보여줄지 지정해 주어야 한다.(x/y 절대 좌표 사용)
- 전체 콜솔 윈도에서 뷰포트의 위치
- 커서의 위치. 뷰포트는 현재 사용자의 입력을 받고 있다고 가정한다.